package org.example.proxy4;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/*
动态代理创建流程
1.创建动态代理的模板类，实现InvocationHandler
2.覆盖invoke方法
3.写成员变量--zs
4.完成invoke方法
 */
public class MyInvocationHandler implements InvocationHandler {
    Object target;//zs
    public MyInvocationHandler(Object target) {
        this.target = target;
    }
    /*
    就是ls的送花方法
    1.通过成员变量zs，实现核心业务
    2.对核心业务的增强
     */

    /**
     *
     * @param proxy -- 代理类对象 这个方法中不用
     * @param method -- zs的核心业务方法
     * @param args -- zs的核心业务方法需要使用的参数
     *
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        /*对象 target
        方法 method
        实参 args*/
        System.out.println("记录日志开始");
        //zs送花 实现核心业务
        //如果没有返回值 o就是null值
        Object o = method.invoke(target, args);
        System.out.println("记录日志结束");

        return o;
    }
}
